<?php
Class PersonasController extends AppController {
	var $name = 'Personas';
	var $helpers = array('Html', 'Javascript', 'Ajax');
	
	
	/**
	 * 
	 * @return 
	 * @param $iIdPersona Object[optional]
	 * @param $iTipo Object[optional] 0 autorizado, 1 responsable
	 */
	function agregarPersonaJson($iIdPersona=null,$iTipo=0){
	
		$aPersona = array(
			'apellido' => $_POST['apellido_persona'],
			'nombre' => $_POST['nombre_persona'],
			'id_cliente' => $_POST['id_cliente']
		);
		
		if($iIdPersona==0){
			//agrega la persona
			$this->Persona->save($aPersona);
			$iIdPersona = $this->Persona->getLastInsertId();
			
			//guarda la relacion 
			$iIdCliente = $_POST['id_cliente'];
			if($iTipo==0){
				$this->requestAction("/clientepersonas/addAutorizado/$iIdCliente/$iIdPersona");			
			}
			
			if($iTipo==1){
				$this->requestAction("/clientepersonas/addResponsable/$iIdCliente/$iIdPersona");			
			}
			
			
		}
		else{
			$aPersona['id'] = $_POST['id_persona'];
			//modifica la persona
			$this->Persona->save($aPersona);
		}
		

		
		/*
		
		//si id_persona es 0 => agrega la persona y la relacion con el cliente
		if($this->Persona->save($aPersona)){
			//guarda la relacion
			$iIdCliente = $_POST['id_cliente'];
			$iIdPersona = $this->Persona->getLastInsertId();
			$this->requestAction("/clientepersonas/addAutorizado/$iIdCliente/$iIdPersona");
		}
		
		if($aPersona['id_persona']==0){
			$this->requestAction("/clientepersonas/addAutorizado/$iIdCliente/$iIdPersona");
		}
		else{
			$this->requestAction("/clientepersonas/addAutorizado/$iIdCliente/$iIdPersona");
		}
		
		
		$aErrores = array();
		
		if(!is_null($id)){
			$this->data['Persona']['id'] = $id;
		}
		else{
			echo "{estado:'false', mensaje:'Debe ingresar un id'}";
			exit;
		}
		
		if(isset($_POST['apellido_persona']) && !empty($_POST['apellido_persona'])){
			$this->data['Persona']['apellido'] = $_POST['apellido_persona'];
		}
		else{
			$aErrores['apellido_persona'] = "Debe ingresar el <strong><a href=\"javascript://\" rel=\".apellido_persona\" onclick=\"doFocus(this)\">apellido</a></strong> de la persona";
		}
		
		if(isset($_POST['nombre_persona']) && !empty($_POST['nombre_persona'])){
			$this->data['Persona']['nombre'] = $_POST['nombre_persona'];
		}
		else{
			$aErrores['nombre_persona'] = "Debe ingresar el <strong><a href=\"javascript://\" rel=\".nombre_persona\" onclick=\"doFocus(this)\">nombre</a></strong> de la persona";
		}
		
		//revisamos ahora si es que no hubo ningun error
		if(empty($aErrores)){
			if($id==0){
			
				//agrega un cliente
				$idCliente = $_POST['id_cliente'];
				$idPersona = $_POST['id_persona'];
				
				//pr($this->data['Persona']);
				$this->requestAction("/clientepersonas/addAutorizadoJSON/$idCliente/$idPersona");
			}
			if ($this->Persona->save($this->data['Persona'])){
				echo "{estado: true, mensaje:'Se actualizarón correctamente los datos'}";
			}
			else{
				echo "{estado: false, mensaje:'No se puedo guardar los datos de la persona'}";
			}
		}else{
			$sErrorAux = '';
			foreach($aErrores as $sKeyError => $sError){
			$sErrorAux .= $sKeyError . ": '$sError',";
			}
			$sError =  substr($sErrorAux, 0, -1);
			echo "{estado:false, errores: {" . $sError . "}}";
		}
		$this->layout = false;*/
	}
	
	function index()
	{
			
			$this->set('personas',$this->Persona->findAll());
			
	}
	//
	function in2ex()
	{
			$this->set('personas',$this->Persona->findAll());
	}
	
	function setearVariables()
	{
		//seteamos las variables de error para ser mostradas en caso de no poder
		//guardar los datos
		
		//Mensaje de status q se muestra arriba de los datos.
		$this->set('statusPersona', 'Ingrese los datos de Persona');	
		$this->set('errorNombrePersona', 'Formato del nombre incorrecto.');
		$this->set('errorApellidoPersona', 'Formato del apellido incorrecto.');
		$this->set('errorDniPersona', 'Formato del dni incorrecto.');
	}
	
	function addPersona() 
	{
		//setea la variables de errores y status
		$this->setearVariables();
		//Si los campos no estan vacios intenta guardar los datos de la persona
	if(empty($this->data['Persona']['dni']))		
		$this->data['Persona']['dni'] = '0';

	$this->Persona->save($this->data);
	}

	function validarCampos()
	{
		$this->setearVariables();
		$this->Persona->data = $this->data['Persona'];
		if ($this->Persona->validates())
			return true;
		else
			return false;
	}

	function listarPersonas($nombre=null)
	{
		$nomfiltro = "LIKE " . $nombre .   "%";
		return($this->Persona->findAll());
		/*return($this->Cliente->generateList(array('nombre'=> $nomfiltro),'nombre ASC',null,'{n}.Cliente.id','{n}.Cliente.nombre'));*/
	} 
	
	function add() 
	{
		//setea la variables de errores y status
		$this->setearVariables();
		
		//Si los campos no estan vacios
		if(empty($this->data))
		{//si no hay datos se renderiza de nuevo
			//$this->render();
		}
		else
		if(!empty($this->data))
		{//sino intenta guardar los datos de la persona
			if($this->Persona->save($this->data))
			{//si no lo consigue setea un error
					$this->set('statusPersona', 'Existen errores con Persona');
					//$this->render();
					$this->set('status', 'Datos Guardados');
					//$this->set('test', $this->data);
					//listamos ahora a todas las personas
					$this->set('data', $this->Persona->findAll("ORDER BY id desc"));
					$this->render('lista', 'ajax');
			}
			else 
			{
				$this->set('statusPersona', 'Existen errores con Persona');
				
			}
		}
	}
	
	function modificar ($id=null) {
	
		//setea la variables de errores y status
		$this->setearVariables();
		
		//Carga el data para mostrar los datos.
		if (empty($this->data)) { 
			$this->Persona->id = $id;
			$this->data = $this->Persona->read();
		}
		//Aqui es cuando graba los datos.
		else 
		{ 
			 if ($this->Persona->save($this->data['Persona']))
  			{
  				$this->flash('Datos Modificados','/personas/index');
			}

		}
	}
	
	function borrar ($id) {
		
		if ($this->Persona->del($id)) 
		{
			$this->set('data', $this->Persona->findAll("ORDER BY id desc"));
			$this->render('lista', 'ajax');
		}
	}

//para mostrar un select con las personas
	function seleccionar($nombre=null)
	{
		$nomfiltro = "LIKE " . $nombre .   "%";
		//echo '<pre>';
		return($this->Persona->generateList(array('apellido'=> $nomfiltro),'apellido ASC',null,'{n}.Persona.id',"{n}.Persona.apellido"));
		//echo '</pre>';
	}

//esta funcion devuelve el id de una persona cuyo dni es el pasado por el parametro
function getIdOfDni($dniPersona)
{
	$persona = $this->Persona->find(array('dni'=>$dniPersona),null,'id DESC');
	return($persona['Persona']['id']);
}


}
?>